﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Recursos.Model;

namespace Recursos.View
{
    public partial class EquipoViewModify : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var userSecurity = ((Usuario)Session["UserLogged"]);
            var permisos = new PermisosModel();
            if (userSecurity == null)
                Response.Redirect("~/NoAccess.aspx");
            if (!Page.IsPostBack && userSecurity != null && permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
                BindData();

            else if (userSecurity == null || !permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }
        }

        public void BindData()
        {
            var equipo = new EquipoModel();
            var recursos = equipo.CargarRecursos();
            GridView1.DataSource = recursos;
            GridView1.DataBind();

        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            var t = e.Row.RowType;

            if (t == DataControlRowType.DataRow)
            {
                if (this.GridView1.EditIndex >= 0 && e.Row.RowIndex == this.GridView1.EditIndex)
                {
                    var d = e.Row.FindControl("DropdownTipo") as DropDownList;
                    var em = e.Row.DataItem as Recurso;
                    var tipos = new EquipoModel();
                    d.DataSource = tipos.CargarTiposRecurso();
                    d.DataBind();
                    d.SelectedValue = em.IdTipo.ToString();

                    d = e.Row.FindControl("DropdownEstado") as DropDownList;
                    em = e.Row.DataItem as Recurso;
                    // En DB Disponible 0 Fuera de servicio 1
                    d.Items.Add("Disponible");
                    d.Items.Add("Fuera de Servicio");
                    d.DataBind();
                    d.SelectedValue = em.Estado;

                    d = e.Row.FindControl("DropdownEspacio") as DropDownList;
                    em = e.Row.DataItem as Recurso;
                    var espacios = new EspacioModel();
                    d.DataSource = espacios.CargarEspacios();
                    d.DataBind();
                    d.SelectedIndex = 0;
                }
            }
        }

        private int boolInt(bool tipo)
        {
            if (tipo == false)
                return 0;
            return 1;
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            e.Cancel = true;
            GridView1.EditIndex = -1;
            BindData();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindData();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            var txtCodigoActivo = (TextBox)row.FindControl("CodActivo");
            var txtNumSerie = (TextBox)row.FindControl("NumSerie");
            var txtNombre = (TextBox)row.FindControl("Nombre");
            var dropTipo = (DropDownList)row.FindControl("DropdownTipo");
            var dropEstado = (DropDownList)row.FindControl("DropdownEstado");
            var txtDescripcion = (TextBox)row.FindControl("Descripcion");
            var dropEspacio = (DropDownList)row.FindControl("DropdownEspacio");

            var codigoActivo = txtCodigoActivo.Text;
            var numSerie = txtNumSerie.Text;
            var tipo = int.Parse(dropTipo.SelectedValue);
            var estado = dropEstado.SelectedItem.Text;
            var recursoId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var espacio = dropEspacio.SelectedValue;
            var equipo = new EquipoModel();
            if (dropEspacio.SelectedValue == "" || dropTipo.SelectedValue == "")
                return;
            var resultadoactualizacion=equipo.ActualizarRecurso(recursoId, codigoActivo, numSerie, tipo, estado, int.Parse(dropEspacio.SelectedValue));
            GridView1.EditIndex = -1;
            BindData();
            if(resultadoactualizacion!=0)
            WebMsgBox.Show("Equipo " + codigoActivo + " actualizado correctamente.", "Modificación de Equipo");
            else
                WebMsgBox.Show("Error: equipo " + codigoActivo + " duplicado", "Modificación de Equipo");
            
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            var equipo = new EquipoModel();
            var recursoId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var recursoaeliminar = equipo.CargarPorId(recursoId);
            var conflicto = equipo.ElminarRecurso(recursoId);
            if (conflicto != 0)
                WebMsgBox.Show("Recurso " + recursoaeliminar.CodActivo + " eliminado correctamente", "Eliminar Equipo");
            else
                WebMsgBox.Show("Error: El recurso " + recursoaeliminar.CodActivo + " no pudo ser eliminado", "Eliminar Equipo");
            BindData();
        }
    }
}